/**
 * Creat with IntelliJ IDEA
 * Description:在JLayeredPane容器中添加5个组件，分别位于不同的层上
 * User:WZW
 * Date:2021-12-03
 * Time:20:59
 */
import javax.swing.*;
import java.awt.*;
public class Example10_6
{
    public static void main(String args[])
    {
        new WindowLayered();
    }
}

//javax.swing包中的JFrame类是java.awt包中Frame类的子类。
class WindowLayered extends JFrame//a top-level container
{
    WindowLayered()
    {
        //设置出现在屏幕上时的初始位置为(a, b)，即距屏幕左面a个像素、距屏幕上方b个像素；窗口的宽是width，高是height。
        setBounds(100,100,300,300);
        //设置窗口是可见还是不可见，窗口默认是不可见的。
        setVisible(true);

        //JButton - 按钮组件
        JButton b1 = new JButton("我在DEFAULT_LAYER");//创建一个带文本的按钮。
        JButton b2 = new JButton("我在PALETTE_LAYER");
        JButton b3 = new JButton("我在MODAL_LAYER");
        JButton b4 = new JButton("我在POPUP_LAYER");
        JButton b5 = new JButton("我在DRAG_LAYER");

        //设置组件的大小和位置
        b5.setBounds(50,50,200,100);
        b4.setBounds(40,40,200,100);
        b3.setBounds(30,30,200,100);
        b2.setBounds(20,20,200,100);
        b1.setBounds(10,10,200,100);
        //创建一个分层窗格对象
        JLayeredPane pane = new JLayeredPane();
        //设置pane的布局管理器为空 - 可以自己手动设置组件的坐标位置和大小
        pane.setLayout(null);

        //添加组件com，并指定com所在的层，其中参数layer取值JLayeredPane类中的类常量：
        //DEFAULT_LAYER 、PALETTE_LAYER、 MODAL_LAYER、POPUP_LAYER、 DRAG_LAYER。
        pane.add(b5,JLayeredPane.DRAG_LAYER);
        pane.add(b4,JLayeredPane.POPUP_LAYER);
        pane.add(b3,JLayeredPane.MODAL_LAYER);
        pane.add(b2,JLayeredPane.PALETTE_LAYER);
        pane.add(b1,JLayeredPane.DEFAULT_LAYER);

        //添加分层窗格到容器的中间
        add(pane, BorderLayout.CENTER);

        //刷新 - 以保证容器中的组件能正确显示出来
        validate();

        // ---
        setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
    }
}

